home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 08 - 1992 / 08.03 Jul 92 / Equation Compiler / EqnCompiler.h < prev   
Encoding:
C/C++ Source or Header  |  1991-05-17  |  1.8 KB  |  61 lines  |  [TEXT/KAHL]

  1. /* Header file for EqnCompiler */
  2.  
  3. /* maximum number of pending operations */
  4. #define    MAX_PENDING        20
  5. /* maximum length for a numeric constant */
  6. #define    MAX_CONST_LEN    20
  7. /* maximum length for a custom keyword */
  8. #define    MAX_KWORD_LEN    10
  9.  
  10. #define    OPERAND_SCAN    1
  11. #define    OPERATOR_SCAN    2
  12. #define    PARENTH            0
  13. #define    RANK            0xFFFFF000
  14.  
  15. /* operands */
  16. #define    X_OPERAND        0x1000
  17. #define    COEFF_OPERAND    0x2000
  18. #define    CONST_OPERAND    0x4000
  19. #define    PI_OPERAND        0x4000
  20.  
  21. /* operations - in order of priority */
  22. #define    PRIORITY_1    0x1000 /* add, subtract */
  23. #define    PRIORITY_2    0x2000 /* mult, divide */
  24. #define    UN_MINUS        0x3000 /* unary minus */
  25. #define    EXPONENT        0x4000 /* raise power */
  26. #define    UN_FUNC        0x5000 /* unary func */
  27.  
  28. /* function types */
  29. #define    FP68K        0x0100
  30. #define    ELEMS68K        0x0200
  31. #define    CUSTOM        0x0400
  32.  
  33. /* errors returned by CompileEqn() */
  34. #define    nullEqnErr        1    /* only white space chars found in text */
  35. #define    memoryErr    2    /* problems allocating memory for code */
  36. #define    longNumErr    3    /* numeric constant too long */
  37. #define    badNumErr    4    /* invalid numeric constant */
  38. #define    noOperandErr    5    /* expecting operand or function */
  39. #define    noOperatorErr    6    /* missing operator */
  40. #define    badTokenErr    7    /* unrecognized characters */
  41. #define    noLeftParenErr    8    /* missing left parenthesis in function */
  42. #define    unbalParenErr    9    /* unbalanced parentheses */
  43. #define    tooManyOpErr    10    /* too many pending operations */
  44. #define    miscErr        11    /* other error */
  45.  
  46. /* function prototypes */
  47. int    CompileEqn(void *, int, int *, Handle);
  48. int    ScanNum(extended *);
  49. int    ScanFn(int *);
  50. int    ScanOp(int *);
  51. int    OperationCode(int, int, int, extended *);
  52. int    OperandCode(int, int, extended *);
  53. int    UnOpCode(int);
  54. int    BinOpCode1(int, int, int);
  55. int    BinOpCode2(int);
  56. int    ReturnCode1(int, int, extended *);
  57. int    ReturnCode2(void);
  58. int    LookUpCF(char *, int *);
  59.  
  60.  
  61.